package com.ceair.flight.refund.service;

import com.ceair.flight.refund.dto.nonflight.SeatRes;
import com.ceair.muservice.baggage.dto.EmdBageOrderListDto;
import com.ceair.muservice.checkin.dto.CheckInFamilyReq;
import com.ceair.muservice.checkin.dto.CheckInFamilyRes;
import com.ceair.muservice.checkin.dto.PwInputReq;
import com.ceair.muservice.checkin.dto.PwRes;
import com.ceair.muservice.emd.dto.EMDOrderDto;
import com.ceair.muservice.emd.dto.EMDRefundTktRes;
import com.ceair.muservice.emd.dto.EmdSeatOrderReq;
import com.ceair.muservice.emd.dto.EmdSeatOrderRes;
import com.ceair.muservice.wifi.dto.WifiOrderDto;

import java.util.List;

/**
 * 退票副营产品处理
 */
public interface IRefundOtherProductService {

    /**
     * 退订非航产品 （wifi、emd、baggage）
     *
     * @param orderNo
     * @param ticketNo
     * @param firstName
     * @param midName
     * @param lastName
     * @param saleChannel
     * @param segId
     */
    void doRefundOtherProducts(String orderNo, String ticketNo, String firstName, String midName, String lastName,
                               String saleChannel, String segId);

    /**
     * 查询WIFI
     *
     * @param ticketNo
     * @param firstName
     * @param midName
     * @param lastName
     * @return
     */
    List<WifiOrderDto> queryWifiByOrder(String ticketNo, String firstName, String midName, String lastName);

    /**
     * 取消wifi
     *
     * @param wifiOrderDto
     * @return
     */
    void refundWifi(WifiOrderDto wifiOrderDto);

    /**
     * EMD订单列表查询
     *
     * @param ticketNo
     * @param firstName
     * @param midName
     * @param lastName
     * @return
     */
    List<EMDOrderDto> queryEmdOrder(String ticketNo, String firstName, String midName, String lastName);

    /**
     * EMD退票
     *
     * @param emdOrderNo
     * @return
     */
    EMDRefundTktRes refundEmdOrder(String emdOrderNo);

    /**
     * 行李查询
     *
     * @param orderNo
     * @param ticketNo
     * @param firstName
     * @param midName
     * @param lastName
     * @param saleChannel
     * @return
     */
    List<EmdBageOrderListDto> getEmdBageOrderList(String orderNo, String ticketNo, String firstName,
                                                  String midName, String lastName, String saleChannel);

    /**
     * 取消行李
     *
     * @param baggageDto
     * @param saleChannel
     * @param site
     * @return
     */
    void refundBaggage(EmdBageOrderListDto baggageDto, String saleChannel, String site);

    /**
     * 已值机票获取是否本渠道和座位信息
     *
     * @param tktNo
     * @return 如果是本渠道， 返回的dto里标记为true 和 座位号;
     * 如果不是本渠道，返回的dto里标记为false，座位号为null
     */
    SeatRes getLocalChannelSeat(String tktNo);

    /**
     * 多人值机
     */
    CheckInFamilyRes checkInFamily(CheckInFamilyReq req);

    /**
     * 取消值机
     */
    PwRes doDelPsr(PwInputReq pwInputReq);
}
